Mario Improvement 3 Version 0.95                                      
Copyright (C) 1999-2000 by LincolnSoft			   
July 22, 2000


New in Version 0.95
===================
This is what's new in this version:

- Internal support for all of the Mario Allstars levels, including the map
screens.  However, you still can't edit map screen pointers or level headers
in Mario Allstars yet, and a few other things that work in the NES version
won't work with Mario Allstars yet.  Thanks to MarioExpert for providing the
Mario Allstars offsets!

- Internal support for the pipe and hammer bros. levels in the NES version
only.  (There are selections available in the level selector box for these
levels in Allstars mode as well, but loading them will just give you
garbage.)

- Internal support for some "lost levels" in the NES SMB3 ROM.  Thanks to
MarioExpert for finding these.

- Freeform Mode.  This mode lets you create a cutsom Mario 3 level from
scratch, with any object set, and as many 3 and 4-byte objects and enemies as
you want (limited only by ROM pointer space), and you can add and delete
objects as well. See below for more information on this special editing mode.
This mode only works with the NES version.  You cannot create map screens
with this mode, only levels.

- M3L file saving.  M3L files are standalone Mario 3 level files.  You can
rip levels from the NES version of the game by saving them to M3L, and you
can also save levels made using Freeform Mode to this format before saving
them into the ROM.  This feature could also be used to back up old versions
of levels, in case you screw one of the levels in the ROM up or something.
You cannot save map screens to M3L, only levels.

- Map screen sprite support.  Now you can edit where the hammer bros.,
piranha plants, boats, ships, and stuff like that are on the map screen.
Works in the NES version only.

- Changed a few things in Object Sets 2 (Hilly) and E (Underground) to make
levels with these object sets load correctly in Mario Allstars.

- Added an "Edit This Level" button to the pointer dialogs, for quick editing
of levels pointed to from the map screens or the level headers.

- Vertically oriented levels now display correctly in the editor (in the
NES version only).  This is based on what is selected in the "Scrolling"
box for the level, so if you have one of the "Upward Scrolling" selections
selected, it will automatically display the level vertically.

- You can move the cursor below vertical location 1B now, because in some
levels (even horizontally oriented ones) enemies are down there (for
whatever reason).  You can't move regular 3 or 4-byte objects down below
there though (unless it's a vertically oriented level).

- Added indicators on the status display for how many 3 and 4-byte objects
and enemies are in the level you're currently editing, and how many bytes
the level is.   Mainly intended for Freeform Mode but also works when editing
normal ROM levels.

- The source code to MI3 has been released.  It will likely remain open
source from now on.  I don't have as much time to work on MI3 as I used to,
so if you want to add some new features or something, now you can.  Just
beware: some sections of the source code (especially the tile drawing and
control code) are *very* messy, due to the fact that this was the first
practical program that I ever wrote.  The license terms for the source code
are this:

You may use, modify, redistribute, and generally hack it about in any 
way you like, as long as you give me credit for the original MI3 source 
code. I'd also appreciate it if you send me any major changes or improvements 
you make, but you are not required to do this.   If your changes or 
improvements are included in a future version of MI3, I will give you 
credit for them.


System requirements
===================
-At least a 386 (but probably something more like a 486)
-A VGA card
-A mouse
-DOS
-If you run it from pure DOS, you need CWSDPMI - available separately. It
 should work fine from Windows 9x. (A note about Windows 3.x: Not only
 should you have upgraded to Windows 9x by now, I don't know if it will work
 properly, either.)
-The Mario 3 ROM (available separately)
-The Mario Allstars ROM (for Mario Allstars support, available separately)
-A NES emulator with Mapper 4/MMC3 support (needed to run Mario 3) NESticle
 and FWNES should work fine for this
-An SNES emulator (such as ZSNES or SNES9X) for Mario Allstars support
-A sense of creativity :)

How to use
==========
Before you use the editor, you must understand a little bit how Super Mario
Bros. 3 stores its levels.  Each side-scrolling area in Super Mario Bros. 3
is stored as groups of 4-byte objects (usually consisting of things like
ground, walls, etc.) and 3-byte objects (usually onsisting of things like
coins, blocks, and bricks).  There are only a limited number of these two
object types in each level, and they are not interchangeable.  If you try to
do so, the game will crash miserably when you first enter the level from the
map screen.  You cannot add or take away any of these objects.   Also, the
bonus areas (e.g. down the pipe you can fly up to in the first level) are
stored separate from the main level, and so are the endings of levels (e.g.
the ending to World 1-4), in addition to other "bonus" areas.  Enemies are
stored in a diffent ROM location than the 3/4-byte object data.  All enemies
are 3-bytes, and of course there's a limited amount of them too.  Things
such as moving platforms and the giant "?" blocks found in some bonus rooms
are also stored as enemies.   You can see how many objects there are of each
type as well as where in the ROM they are stored by going to Level / Level
Info. To check whether an object is 3 bytes or 4 bytes, find the upper left
corner of the object.  There should be a green or pink upside-down "L".
If it's green, that means the object is 3 bytes, and if it's pink, it's 4
bytes.   If it's purple then it's an enemy.   Some levels (e.g. World 1-4,
above) have no 4-byte objects.  Some levels have no enemies.  Every level,
however, has 3-byte objects.

Editor Keys
===========
Map screen editor keys:

Arrow keys/Mouse: Move around
Arrow keys + Ctrl key: Fast scroll (16 tiles at a time)
Comma key/Left mouse button: Scroll downward through tiles
Period key/Right mouse button: Scroll upward through tiles
J key: scroll downward through 16 tiles at a time
K key: scroll upward through 16 tiles at a time
Space bar + arrow keys: (or drag and drop with mouse): pick up map screen
sprites and move them
Space bar + period/comma keys: Scroll through map screen sprites one
at a time (there are only 17 different map screen sprite types, so
the fact that you can only scroll through one at a time shouldn't
be a problem.)

When pointer mode enabled:

Enter key (when cursor is on top of pointer): Bring up Pointer Properties
dialog
Space bar / Drag and drop with mouse: Pick up pointers, move them around


Normal level editor keys:
Arrow keys/mouse: Move cursor, scroll around level
Arrow keys + Ctrl key: Fast scroll (16 tiles at a time)
Space bar:  Pick up objects
(The editor will autodetect whether it is 3 bytes, 4 bytes, or an enemy).

Keys defined for all objects:
	Arrow keys/mouse drag and drop: Move object around 
	Period key: Increase length/value of object (up to 16), after
                    that it will change to the next object.
	Comma key: Decrease length/value of object (down to 1), after
                    that it will change to the previous object.
	"K" key: Jump 16 objects ahead.
	"J" key: Jump 16 objects backward.

Keys defined for 3-byte and 4-byte objects (but not enemies):
	"M" key: Jump 256 objects ahead.
	"N" key: Jump 256 objects backward.

Keys defined for 4-byte objects only:	
	Apostrophe key: Increase length of object (up to 255)	
	Semicolon key: Decrease length of object (down to 0)

Keys defined for pointers only:
        Enter key (when cursor is on top of pointer):  Bring up
        "Pointer Properties" box

Keys defined in Freeform Mode only:

F9 - add 3-byte object
F10 - add 4-byte object
F11 - add enemy
Delete - delete object (make sure the cursor is on the upside-down "L"
of the object first)

Note that you can drag and drop objects in side-scrolling levels
using the mouse.  

GUI Options
===========
The keyboard shortcut for each menu item is displayed next to the menu item
(e.g. "L" for load rom, or "W" to select level)

Options Dialog:

Warn if Level Not Saved:  On by default.  Turning this off disables warning
you if you have not saved the level (and you try to load a different level,
ROM etc.)

Warn on Exit:  On by default.  Turning this off disables the "Do you want to
quit?" box.

Mouse Scrolling:  On by default.  Normally (when this is checked), the level
will scroll when the mouse reaches the edge of the screen.  If this is
unchecked the level will not scroll when the mouse reaches the edge of the
screen.  (You can still scroll the level by moving the cursor with the arrow
keys.)

Reset Coordinates when Loading Levels:  Off by default.  When checked, the
cursor location will be reset to the bottom left corner of the level when
you load a new level.

Display 3-byte objects on top of 4-byte objects:  Off by default.  It helps
when editing dungeon, cloudy, etc. levels that use lots of large 4-byte
objects if you turn this on because then all the 3-byte blocks and stuff
won't be obscured.

Automatically Sort Enemies:  Turned on by default.  When you save a level and
this is on, MI3 will sort the enemies.  This eliminates that "feature" of
enemy editing where the enemies would be out of order and some of them
wouldn't be there, or there would be no goal card, etc.  You shouldn't have
to turn it off, but I made it an option in case it causes problems in certain
levels (it probably won't, but just in case.)


Header editing options (available through Level menu):

Music:  Change the music that plays during the level.  I love messing around
with this. :)

Graphics:  This changes the graphics that the level uses.  Note that this is
very limited.  There are usually only one or two selections from this box
that will look right with the object set that the level uses.  For instance,
try changing the graphics in a plains level to a hilly level, and it'll look
really weird.   As far as I know the game will still run fine, however.  So
if you want a weird looking level, or maybe if you're just curious, feel
free to try it.  By changing this you can also make a hilly level into an
underground level, and things like that.  See if you can find other ones
that work.  I'm not sure what the "unknown" selections are for, as far as I
know no levels use them.  You can try them if you want to make your level
look really weird.

Palette:  Change the colors.  There's some really weird palettes too (most
aren't used anywhere during the normal course of the game), so there's a
preview box so you can get an idea of what it'll look like.  I suspect I'll
see lots of interesting looking levels as a result of this.  Different object
sets have different palette selections.  You can also select between black
and blueish enemies: blueish enemies have all the black parts turned into
this really dark blue color, so you can see them better in underground or
nighttime levels.

Scrolling:  There's 16 options, but as far as I know it only reduces down to
4:  No upward scrolling, scrolls when you fly up, freely scrolling, and
upward scrolling (this makes any level into a vertically scrolling level,
like the World 7 pipe levels.)  I'm not sure why there's so many, or what
the differences are.  If you want autoscrolling, try putting the
autoscrolling "enemies" near the beginning of levels.  Putting the
autoscrolling enemies at different heights and changing the place Mario
starts causes levels to autoscroll differently, try it sometime.  (Look at
some of the autoscrolling levels in the ROM for some examples.)

Misc Level Options:  Options that don't belong anywhere else.  Change the
length of the level (it will stop scrolling after however many tiles long
you make it here), change where Mario starts (there's two of each of these,
I'm not sure why),  change the amount of time you get, or the action you'll
perform when you begin the level (this is how you start sliding down the hill
at the beginning of World 1-5, for example).  If you check the "Weird colored
enemies" box, the enemies in the level will be colored with this weird white,
green, red, and black palette. This will override whatever colors you
selected for the enemies in the Palette box.  I'm not sure why this option
is here, I don't think any levels use it, but it's there.  Also, if you
change the horizontal starting location to 0D and the level is longer than 0F
tiles and the level is not upward scrolling, the scrolling in the game will
"screw up" when you start the level.  After that, however, it'll be fine.


Pointer stuff
=============

Map screen pointers:  To enter pointer editing mode, go to View -> Pointer
Mode.  All the tiles on the map screen that actually point to something will
be darkened.  The pointer numbers are the index of the pointer in the pointer
table (you can turn them off if you want.)  To move pointers around, use the
space bar to pick them up and press the arrow keys (like in a side scrolling
level).  Note that you only get as many pointers as are in the map screen.
If you try to place a level where there is no pointer, unpredictable things
can happen (including crashes), although sometimes it will load a valid level
(for instance, on the umodified World 1 map, two tiles above the start panel
goes to the secret level even though there's no pointer there, but two tiles
below will crash the game).  If a pointer is not on a level (maybe it's on
one of those road conncetors or something) then when you meet the hammer
bros. on that tile it will load the level that that pointer points to.  If
you put a level on one of those hammer bros. pointer tiles it will load the
hammer bros. level when you enter it.  If you press Enter when the cursor is
over a pointer you can see which level and enemy offsets it points to, the
level/world number (if MI3 recognizes it) as well as the object set.  You
can change the level and enemies it points to (if the level you want isn't
listed, you can specify a custom offset that goes to the level and enemies
you want.)  You can also change the object set, but in most cases the game
will crash if you try to load a level just with a different object set.  If
you want to see what SMB3 will try to load, use the "Load level from offset"
function for the level and enemy offsets, and the object set you want to use,
and if it looks like garbage it probably won't work.  If you choose a custom
level offset you will have to specify the object set manually, otherwise it
will set the object set automatically to what it's supposed be (but you can
still change it if you want.)

Object sets 7 and F are mushroom houses and spade houses, respectively. If
you make something into a mushroom house you can change the type of mushroom
house it is (i.e. what items it will have when you go to it.) The spade house
has no extra options as far as I know.

If you don't have enough pointers to cover all the levels, road conncetors,
mushroom houses, etc., you can put the finished stage objects there, so then
the hammer bros. won't stop there.  This way it won't crash the game if you
meet up with the hammer bros. on a tile with no pointer.

The warp zone has no enemy or level pointers.  Instead, the "object set"
actually points to the world to load when you enter a pipe on the warp zone
map screen.

Bonus area pointers:  Work pretty much the same way as map screen pointers.
Just go to Level->Pointers and you can see where they point to.  Using this
you can make the pipe in World 1-1 point to World 2-1, and things like that.

Embedded level pointers:  These are the objects in domain 7 which are
embedded in levels.  If a level has a bonus area chances are one or more of
these objects exists somewhere in the level.   If you find one press Enter
to bring up the properties box.  These pointers tell the game where to place
Mario when you enter a bonus area.  The "Exit Horizontal Location" is the
exact horizontal location in the bonus area where Mario will appear.  The
"Exit Vertical Location" is approximated by a couple tiles, so you may have
to adjust the height of your pipes or doors a little bit to get it exactly
right.  The "Entrance Horizontal Location" is a range of horizontal locations
where the entrance pipe or door should be in the main level.  The "Exit
Action" box is what Mario will do when you exit out to the bonus level.   If
you enter the bonus area through a door then whatever is in the "Exit Action"
box shouldn't matter as far as I know, but the default seems to be 8 for a
door.


Load Level from Offset
======================

This box is to load levels that aren't listed in the normal level selector
box.  Specify the level offset, enemy offset, and object set of the level to
load, and then you can load it.  The "Level # and "World #" box have no
significance now, but they probably will in a future version.   Note that
you don't have to specify an enemy offset, if it's 0 it won't load any
enemies.  You can also load one of the levels that's in the normal level
selector box (and see what it looks like with a different object set or edit
it with a different object set).

Note that you cannot load map screens from this dialog box yet.


Pointer Tricks
==============

- Using pointers you can make more levels in the game.  You could make some
of the bonus areas (if they have enough objects) into actual levels and place
them on the map screen.  You can even make some of the hammer bros. areas
into levels.

- Some object sets are "compatible".  Particularily, you can easily change
Underground levels to Hilly (and vice versa), Pipe levels to Water (and vice
versa), Ice to Sky (and vice versa), and Piranha Plant, Giant, and Cloudy are
all interchangeable.  Changing to other, "noncompatible" object sets,
however, will likely crash the game.

- Most levels in the original Mario 3 have bonus areas that just go back to
the main level when exited.  However, by modifying the header pointers it is
possible to chain together bonus areas - for instance, you can make World
1-1's bonus area World 1-2, and then you could make 1-2's bonus area 1-3, so
then when you go down a pipe in the bonus area (which would be World 1-2)
you go to World 1-3 instead of back to 1-1. As far as I know you can chain
together as many bonus areas as you feel like.



SMB3 Engine Limitations
=======================
Side-scrolling level limitations:
There are many objects that will crash (or otherwise do weird stuff to) the
game simply by using them.  If an object says "Crash" or it says "Warning:
Crashes Game" for the object in the status display, don't use it.

Some objects (like some of the block platforms in the first level) extend
automatically all the way to the ground.  If an object other than the "flat
ground" object is underneath them, it will do unpredictable (often weird)
things to the game, and sometimes crash it. It doesn't work the same way all
the time so experiment.  As far as I know this only happens in the Plains
object set (set 1) and the Water object set (set 6).  In a level with
any other object set it's fine if there's no ground underneath.

Some objects, when the length is decreased to one, instead of being one
block long, will last the whole level.  I don't know all the objects that
are like this, but to give you an example, the background clouds are like
this.  I'm not sure why this happens but there's no way I know of to get
around it.

Some levels are used twice (mostly level endings), there's not many of them
though.  You can change this using pointers anyway, so I guess it doesn't
matter anymore.  You can also repeat other levels using pointers.

Map screen limitations:

Some map objects have a "native world".  They will not look right in any
other world's map.  I've tried to make this clear by putting "World x -
object name" for the object name for objects that are like this.  As far as
I know they will only look right in the specified world, but feel free to
experiment.

Enemy limitations:

The game loads the enemies' graphics by dynamically loading the sprites it
needs when it needs them.  Because the NES only has 256 8x8 tiles to use for
sprite graphics (and only some of these can be used for enemies), if you have
too many enemies that use different graphics in an area of a level at once
(the "area" extends a little bit offscreen) the game bankswitching code will
get confused, and the enemies will look like garbage.  It's hard to tell when
exactly this is going to happen.  However, sometimes it happens if you
attempt to put "non-native" enemies in certain object sets (such as a Dry
Bones in a plains level.)  But then again, sometimes it won't happen.
There's only one enemy object set, so in theory you can put any enemy in any
level.  You'll just have to experiment and run the level, to see if the
enemies look right.  (One way to try and make sure is to not have too many
enemies of different types in a general area of the level at once.)

Some enemies also crash the game.  Some "enemies" also turn on and off
autoscrolling.  If you put the autoscrolling object in a level that orignally
did not have it (or sometimes, move it around or change it in levels that do
have it) the game will "screw up".  Some enemies (like bosses) stop the
screen from scrolling, and when you beat them you automatically beat the
level, so make sure you only put them in at the end of your level.  They
also might do things you don't expect (such as: put a Boom-Boom in World 1-1,
beat him, and you automatically beat 1-1, but not the dungeon, and the locked
door disappears.)  So if you do this, make sure you design your map screens
accordingly.

The order of enemies in the enemy object set is sort of odd so I've included
an enemy listing at the end of this file.

Mario Allstars Stuff
====================

The levels in Mario Allstars have less objects than the ones in the NES SMB3.
For instance, the clouds in World 1-1 are gone.  So if you want more objects
you need to edit the NES version.

Currently, you cannot edit the header or mapscreen pointers, or the headers
themselves in Super Mario Allstars.  Mario Allstars seems to use a different
header structure (13 bytes instead of 9 bytes in the header.) The pointers
(except embedded level pointers) are different than the NES version as well.

MI3 detects Mario Allstars roms by extension, so make sure the extension is
.smc before loading it.  There might be different versions of the Mario
Allstars ROM but I don't know.  If so the level offsets might be in different
places in different versions of the ROM than the one I used, causing World
1-1 to be loaded improperly (but if you find out where the levels are, you
can probably still load them with the Load from Offset function).



Freeform Mode
=============

Freeform mode is a special editing mode where instead of modifying existing
levels in the ROM, you can create your own level from scratch using any
object set and add and delete objects at your will.  The only limitation to
the size of your level is ROM pointer space (or another limitation I might
not know about yet.)  If you don't want to create your own level from scratch
but want to use freeform mode, you can rip one of the existing game levels to
a M3L (Mario 3 Level) file and then load it.  (Note:  I do not condone ripping
levels other people have made to M3L, saving them, and using them in your hack,
without the level designer's permission.)

To enter freeform mode, load a M3L file or select "New Level" from the File
menu.  If you select "New Level" give the level a world and level number
and select the object set you want to use and press OK.

Now use the F9 key to add a new 3-byte object, the F10 key to add a new
4-byte object, or the F11 key to add a new enemy.  To delete an object
(any object) move the cursor over the upside-down "L" of the object and
press Delete.  The editor orders the objects in the order in which you create
them, so I recommend to create objects such as ground first, because objects
that extend to the ground (such as the block platforms in plains levels) look
for ground objects below them to determine where the bottom of the object
is, and if it can't find any ground below it then the game will crash.  You
can edit the level header (including the bonus area pointers) through the
Level menu functions just like any other level.

When you want to save it, you can either save to an M3L file or to the ROM.
If you save it to the ROM, you have to choose an offset to save the enemies
and the level itself to.  Although MI3 will let you save outside the offset
range, the offset should be in the range shown by the dialog box, otherwise
your level may be outside the pointer range and will crash the game when it
tries to load your level. You can choose one of the preset offests from one
of the levels already in the game, or you can use your own offset.  The level
offset range is dependent on what object set your level uses.  WARNING:
Saving your level to the ROM overwrites any existing data at that location
in the ROM, so be careful!  To play the level you just saved to the ROM, set
one of the pointers on the map screen to point to the level (make sure it's
the correct object set as well).

Because of this, I recommend to save your levels made with freeform mode to
M3L first.  When you're sure you're done with the level, then save it to the
ROM.  If you're making a multilevel ROM hack this way, then I'd wait until
you're going to release a new version of your hack, and then save all your
custom levels to an unmodified ROM at once so you can plan out what offsets
each level will be at.

For those of you who want to know the format of M3L files, the first three
bytes are the world, level, and, object set number respectively, the next
nine are the header (in NES Mario 3 format), then the level data (in Mario 3
format), ending with a terminating FF byte, and then finally the enemy data
(in Mario 3 format, ending with a terminating FF byte.)


Future Progress
===============
Listed in arbitrary order:

- Better Mario Allstars support
- Object editor (the one last thing before you can edit everything in the
  NES version)
- Rewrite the level display function to make it more accurate
- Improve freeform mode some


Contact
=======
LincolnSoft

Email:
abe@lincolnsoft.com

Web site:
http://www.lincolnsoft.com/

If you make any levels with this program, send them to me!  I'll put them up
on the Mario Improvement 3 Website.  (Make sure they're in IPS format, please
don't send me the entire ROM.)  I expect lots of creative levels to be made
with this program.  The source code is also available on my web site.

Do not email me asking for ROMs, as all such messages will be ignored
and deleted.  Mario Improvement 3 does not come with ROMs, and never will.

Version History
===============
Version 0.95 - July 22, 2000

Map screen sprite support
Freeform Mode
M3L files
Mario Allstars levels internally supported
"Lost Levels", hammer bros. levels, and pipe levels internally supported in
NES version
Vertical levels display correctly in NES version
Source code released

Version 0.75 - April 22, 2000

Pointers
Load Level from Offset
Limited Mario Allstars support

Version 0.50 - December 17, 1999

Header support mostly done
Command line loading
New options added
Bugs fixed

Version 0.35 - July 25, 1999

GUI
Enemy support
Mouse support
Bugs fixed

Version 0.20 - May 5, 1999

Support for all the levels
Map screen support
New keys added
Bugs fixed

Version 0.12 - April 24, 1999

New keys added
Fixed obscure scrolling/object moving bugs
Fixed crash bug
Sped up the editor
Reduced executable size 

Version 0.1 Beta 1 - April 13, 1999

This version was the first version.


Enemy listing
=============
(If there's any inconsistencies, or if you find out something about the
"nothing" or "weird" objects, please tell me)

00	Nothing
01	Some weird enemy
02	Makes you bounce at beginning of level
03	Nothing
04	Weird enemy
05	Weird enemy
06	Green note block
07      Leads to mushroom house with Warp Whistle when you stand
        on a white block for 5 seconds and go behind the objects
08	Invisible door that appears when you get 
        a P-switch
09	Ship anchor
0A	Weird enemy
0B	1-up
0C	Star
0D	Regular mushroom
0E	World x boss (where x = world number)
0F	Nothing
10	Nothing
11	Nothing
12	Nothing
13	Nothing
14	Nothing
15	Nothing
16	Nothing
17	Spiny cheep-cheep
18	Bowser
19	Flower
1A	Weird points
1B	Green note block
1C	Mushroom
1D	Nothing
1E	Leaf
1F	Vine
20	Nothing
21	Flashing mushroom
22	Flashing flower
23	Flashing star
24	Leftward-moving cloud platform, World 6-style
25	Nothing
26	Still wooden platform that moves right 
        when you step on it
27	Wooden moving platform that moves 
        back and forth
28	Wooden moving platform that moves up and down
29	Spike
2A	Ptooie
2B	Kuribo's Goomba
2C	Same as 24, but slower
2D	Boss Bass
2E	Upward-moving "circle block" platform 
        (used in Bowser's castle)
2F	Boo Buddy
30	Hot Foot
31	Top Stretch
32	Bottom Stretch
33	Nipper Plant
34	Toad & message (used in mushroom houses)
35	Automatically clear stage
36	Leftward-moving wooden platform that falls 
        when you step on it
37	Same as 27, but doesn't move as far
38	Same as 28, but doesn't move as far
39	Walking Nipper Plant
3A	Like 2E, but falls when you step on it.
3B	Surface cheep-cheep (jumps out of water)
3C	Wired platform
3D	Walking Ptooie
3E	Floating platform
3F	Dry Bones
40	Buster Beetle
41	Goal Card
42	Jumping cheep cheep (3 jumps, up and right)
43	Jumping cheep cheep (2 jumps, down and right)
44	Still falling platform (falls when you step on it)
45	"Smart" Hot Foot
46	Pipe Ptooie
47	Nothing
48	Baby cheep cheep
49	Background cloud
4A	Magic ball (when you kill Boom-Boom you 
        get this)
4B	Boom-Boom
4C	Flying Boom-Boom
4D	Nothing
4E	Nothing
4F	Jumping chomp
50	Bob-omb (about to blow up)
51	Double rotodisc (rotate counterclockwise)
52	Treasure chest with treasure chest inside
53	Podoboo
54	Weird block
55	Bob-omb
56	Leftward piranha plant
57	Rightward piranha plant
58	Fire Chomp
59	Fire Snake
5A	Single rotodisc (rotate clockwise)
5B	Singe rotodisc (rotate counterclockwise)
5C	Instantly broken brick
5D	Tornado
5E	Double rotodisc (rotate both ways,
        starting at sides)
5F	Double rotodisc (rotate both ways, 
        starting at top and bottom)
60	Double rotodisc (rotate clockwise)
61	Bloober (with babies trailing behind)
62	Bloober
63	Big Bertha
64	Surface cheep cheep (jumps out of water high)
65	Upward current
66	Downward current
67	Lava lotus
68	Upside-down moving buzzy beetle shell
69	Upside-down moving spiny shell
6A	Bloober Nanny
6B	Pile Driver Micro-Goomba
6C	Green Koopa Troopa
6D	Red Koopa Troopa
6E	Green Koopa Paratroopa (bounces)
6F	Red Koopa Paratroopa
70	Buzzy Beetle
71	Spiny
72	Goomba
73	Para-Goomba
74	Para-Goomba with Micro-Goombas
75	Bowser's Fireballs
76	Falling cheep-cheep
77	Cheep-Cheep
78	Still bullet bill
79	Missile bill
7A	Giant Green Koopa Troopa
7B	Giant Red Koopa Troopa
7C	Giant Goomba
7D	Giant Green Piranha Plant
7E	Giant Green Koopa Paratroopa
7F	Giant Red Piranha Plant
80	Green Koopa Paratroopa (doesn't bounce)
81	Hammer Brother
82	Boomerang Brother
83	Lakitu
84	Red Spiny Egg
85	Green Spiny Egg
86	Sledge Brother
87	Fire Brother
88	Yellow Cheep Cheep
89	Chain Chomp
8A	Regular Thwomp
8B	Leftward-moving Thwomp
8C	Rightward-moving Thwomp
8D	Upward-moving Thwomp
8E	Up and Leftward-moving Thwomp
8F	Down and Leftward-moving Thwomp
90	Step-activated Spinning Platform
91	Constantly spinning Spinning Platform
92	Periodically spinning Spinning Platform 
        (clockwise)
93	Periodically spinning Spinning Platform 
        (counterclockwise)
94	Giant "?" block with 3 1-ups
95	Giant "?" block with mushroom
96	Giant "?" block with flower
97	Giant "?" block with leaf
98	Giant "?" block with Tanooki Suit
99	Giant "?" block with Frog Suit
9A	Giant "?" block with Hammer Bros. Suit
9B	Nothing
9C	Nothing
9D	Upward rocket engine
9E	Podoboo (comes out of lava)
9F	Para-Beetle
A0	Upward green piranha plant
A1	Downward green piranha plant
A2	Upward red piranha plant
A3	Downward red piranha plant
A4	Upward Green Venus Fire Trap
A5	Downward Green Venus Fire Trap
A6	Upward Red Venus Fire Trap
A7	Downward Red Venus Fire Trap
A8	Automatically moving upward directional platform
A9	Automatically moving multi-directional platform
AA	Propeller
AB	Nothing
AC	Leftward rocket engine
AD	Brown Rocky Wrench
AE	Nut (use with corkscrew)
AF	The Angry Sun
B0	Still big bullet
B1	Rightward rocket engine
B2	Downward rocket engine
B3	Weird flashing enemy
B4	Unlimited flying cheep-cheeps
B5	Unlimited spiny cheep-cheeps
B6	Nothing
B7	Unlimited para-beetles
B8	Moving background clouds
B9	Unlimited leftward-moving falling platforms
BA	Exit on get treasure chest
BB      Stops flying/spiny cheep cheeps
BC	Bullet bills
BD	Missile bills
BE	Rocky Wrench
BF	Cross-shaped bullets (for use with cross-shaped 
        bullet shooters)
C0	Goomba factory (leftward)
C1	Goomba factory (rightward)
C2	Bullet balls (leftward)
C3	Giant bullet balls (leftward)
C4	Bullet balls (up/left)
C5	Bullet balls (up/right)
C6	Bullet balls (down/left)
C7	Bullet balls (down/right)
C8	Seems the same as C4
C9	Seems the same as C5
CA	Seems the same as C6
CB	Seems the same as C7
CC	Bullet balls (rightward)
CD	Giant bullet balls (rightward)
CE	Bob-omb factory (for use with bullet shooters) 
        (leftward)
CF	Bob-omb factory (for use with bullet shooters) 
        (rightward)
D0	Lasers (for use with Bowser Statues)
D1	3 Green Koopa Paratroopas
D2	3 Yellow Cheep-Cheeps
D3	Scroll object
D4	Scroll object
D5	"The king has been transformed" message
D6	Puts item in treasure chest (but will likely give you a
        screwed up item)
D7-FE   Crashes game
FF	This tells the game to stop reading sprite 
        data so there will be no sprites if you put 
        this in.

Legal Stuff / Credits
=====================
Mario Improvement 3 Copyright (C) 1999-2000 by LincolnSoft.
Thanks to MarioExpert for finding the offsets for the Mario Allstars levels,
the "lost levels", the hammer bros. levels, and the pipe levels.
Allegro game programming library by Shawn Hargreaves.
Nintendo Entertainment System (NES) is a registered trademark of Nintendo of
America.
Super Mario Bros. 3 is a trademark of Nintendo of America.
This product includes software developed by the University of
California, Berkeley and its contributors.
This program was compiled with DJGPP, available at http://www.delorie.com/
Neither LincolnSoft nor the author are affiliated with Nintendo nor condone
ROM piracy.
This program is free and therefore I am not responsible for any effects,
adverse or otherwise, this program may have on your computer, your sanity,
your dog, or anything else.







 



 
